查看原文
其他

波音 777 飞机由 Ada 语言驱动

程序员的那些事 程序员的那些事 2019-12-05

(给程序员的那些事加星标

原创整理:程序员的那些事(id:iProgrammer)


「Working Together」是波音公司最初考虑生产 777 喷气式飞机时选定的项目名称。当时,波音公司打算让参与该 777 飞机项目的 1 万名员工接受公司内部部门和外部供应商之间的开放和非竞争性政策。



波音的管理层认为,从二级液压制动到自动驾驶系统,「Working Together」是实现飞机系统各个部分尽可能高质量的方法。


「Working Together」模式面临一个挑战,波音公司坚持飞机软件必须用 Ada 编程语言编写。波音的工程航空电子软件经理 Brian Pflug 说,大多数公司根本不喜欢标准语言的想法,然后极力反对 Ada 太不成熟。此外,有一个供应商(Sundstrand)在开发其项目的一部分时已经进行了 6 个月,并且用了另一种编程语言。


(波音公司的供应商之一)霍尼韦尔公司通过对 Ada 和 C 编程语言的优势做了广泛研究。研究得出结论,Ada 内置的安全特性能减少开发时间、降低费用,减少调试的关注。所以当研究结果出来后,霍尼韦尔同意采用 Ada 的决定。


波音 777 主要电力系统的供应商 Sundstrand 同意了这种转换。后来 Sundstrand 反馈,在换语言之后,开发工作继续顺利进行。Sundstrand 项目经理德 Dwayne Teske 在接受电话采访时说,「我们不得不重新开始。但在那之后,项目进展非常顺利,所以 Ada 有很多积极的方面。」


由于他们都参与了 777 飞机的 Ada 项目,飞机系统的其他部分的供应商(包括刹车控制系统供应商  Hydro-Aire)继续也就都采用了 Ada 语言。


寻找工具


选定 Ada 语言后,波音的各个供应商的首要任务,就是为手头的任务选择合适的 Ada 编译器。


霍尼韦尔公司(负责驾驶舱的飞行控制系统),从 DDC-I 公司购买了 Ada 编译器系统,将其作为霍尼韦尔符号调试器的前端源代码。后来这 2 家公司合作一年半,针对 AMD 29050 微处理器,构建了 Ada 编译器的最终调试器和整个后端。


Hydro-Aire 公司(负责刹车控制系统),从 Alsys 公司购买了 Ada 软件开发工具 AdaWorld 。每架波音飞机的刹车控制系统都有 2 个摩托罗拉 58333 微控制器。


Sundstrand 公司(负责电力系统)也是选择了 Alsys 的  AdaWorld,然后选用了Intel 80186 微处理器。


波音 777 飞机子系统的代码量


Sundstrand 公司开发的电力系统,大约 8 万行 Ada 代码,代码重用率在 10~15%


波音 777 的客舱管理系统,大约 7 万行代码;


霍尼韦尔开发的飞机信息管理系统(AIMS)大约有 61.3 万行代码。他们在波音飞机项目上投用的程序员多达 550 名。


「程序员的那些事」暂时只找到波音 777 的 3 个子系统的代码量,至于飞机总代码量是多少,暂没找到相应数据。


参考:维基百科、AdaIC


推荐阅读

(点击标题可跳转阅读)

如果编程语言是飞机

F-35 战斗机的代码量达到 800 万行



关注「程序员的那些事」加星标,不错过圈内事

喜欢就点一下「好看」呗~

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存